//package com.itheima.reggie.common;
//
//import io.minio.BucketExistsArgs;
//import io.minio.MakeBucketArgs;
//import io.minio.MinioClient;
//import io.minio.PutObjectArgs;
//import io.minio.errors.MinioException;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Component;
//import org.springframework.web.multipart.MultipartFile;
//
//import java.io.IOException;
//import java.security.InvalidKeyException;
//import java.security.NoSuchAlgorithmException;
//import java.text.SimpleDateFormat;
//import java.util.Date;
//import java.util.UUID;
//
//@Component
//public class FileUploader {
//
//    @Value("${minio.bucketName}")
//    private String bucketName;
//
//    @Value("${minio.endpoint}")
//    private String endpoint;
//
//    @Value("${minio.accessKey}")
//    private String accessKey;
//
//    @Value("${minio.secretKey}")
//    private String secretKey;
//
//
//    /**
//     * 上传文件
//     * @param file
//     * @return  返回文件名, 页面需要文件名
//     * @throws IOException
//     * @throws NoSuchAlgorithmException
//     * @throws InvalidKeyException
//     */
//    public String upload(MultipartFile file) throws IOException, NoSuchAlgorithmException, InvalidKeyException {
//
//        try {
//            // 使用MinIO服务的URL，端口，Access key和Secret key创建一个MinioClient对象
//            MinioClient minioClient =
//                    MinioClient.builder()
//                            .endpoint(endpoint)
//                            .credentials(accessKey, secretKey)
//                            .build();
//
//            // 检查存储桶是否已经存在
//            boolean isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
//            if (isExist) {
//                System.out.println("Bucket already exists.");
//            } else {
//                // 创建一个名为 huike-crm 的存储桶，用于存储照片的zip文件。
//                minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
//            }
//
//            String fileName = file.getOriginalFilename();
//            String objectName = new SimpleDateFormat("yyyy/MM/dd/").format(new Date()) + UUID.randomUUID().toString().replaceAll("-", "")
//                    + fileName.substring(fileName.lastIndexOf("."));
//
//            // 使用putObject上传一个文件到存储桶中。
//            PutObjectArgs objectArgs = PutObjectArgs.builder().object(objectName)
//                    .bucket(bucketName)
//                    .contentType(file.getContentType())
//                    .stream(file.getInputStream(), file.getSize(), -1).build();
//            minioClient.putObject(objectArgs);
//
//            return objectName;
//        } catch (MinioException e) {
//            System.out.println("Error occurred: " + e);
//            System.out.println("HTTP trace: " + e.httpTrace());
//        }
//
//        return null;
//    }
//}
//
